// 路由鉴权
import router from '@/router'
import settings from '@/settings'
import nProgress from 'nprogress'
// 引入进度条样式
import 'nprogress/nprogress.css'
// 取消进度条转圈
nProgress.configure({
  showSpinner: false,
})
import pinia from '@/stores'
import useUserStore from '@/stores/user'
const userStore = useUserStore(pinia)

// 全局前置守卫
router.beforeEach(async (to, from, next) => {
  // 这里只是简单的判断是否有token,实际项目中需要根据项目需求进行判断
  if (userStore.token) {
    // 用户已登录时的判断
    if (to.path === '/login') {
      // 访问登录页面,重定向到首页
      next('/')
    } else {
      // 访问其他页面时的判断
      if (userStore.username) {
        // 有用户信息,放行
        next()
      } else {
        // 没有用户信息,获取用户信息
        try {
          await userStore.getUserInfo()
          next()
        } catch (error) {
          // 模拟token失效,重新登录
          userStore.clearUserInfo()
          next('/login')
        }
      }
    }
  } else {
    // 用户未登录时的判断
    if (to.path === '/login') {
      // 访问登录页面,放行
      next()
    } else {
      // 访问其他页面,重定向到登录页面
      next('/login')
    }
  }
  // 开启进度条
  nProgress.start()
})


// 全局后置守卫
router.afterEach((to, from) => {
  // 设置页面标题
  document.title = `${settings.title} - ${to.meta.title}`

  // 关闭进度条
  nProgress.done()
})